Maximum average subarray I [Math]

Time: O(N); Space: O(1); easy

Given an array consisting of N integers, find the contiguous subarray of given length K that has the maximum average value. And you need to output the maximum average value.

Example 1:

Input: nums = [1,12,-5,-6,50,3], k = 4

Output: 12.75

Explanation:

  • Maximum average is (12-5-6+50)/4 = 51/4 = 12.75

Notes:

  • 1 <= K <= N <= 30,000.

  • Elements of the given array will be in the range [-10,000, 10,000].

[1]:
class Solution1(object):
    def findMaxAverage(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: float
        """
        total = 0
        for i in range(k):
            total += nums[i]
        result = total
        for i in range(k, len(nums)):
            total += nums[i] - nums[i-k]
            result = max(result, total)
        return float(result) / k
[2]:
s = Solution1()
nums = [1, 12, -5, -6, 50, 3]
K = 4
assert s.findMaxAverage(nums, K) == 12.75